﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Workshop2
{
    class ViewAll
    {
         // Menyn
        public void Menu()
        {
            Console.Clear();
            Console.WriteLine("╔════════════════════════════════════════╗");
            Console.WriteLine("║                   MENU                 ║");
            Console.WriteLine("║________________________________________║");
            Console.WriteLine("║1. Lägg till medlem                     ║");
            Console.WriteLine("║2. Lista alla medlemmar                 ║");
            Console.WriteLine("║3. Lista alla medlemmar detaljerat      ║");
            Console.WriteLine("║4. Ta bort medlem                       ║");
            Console.WriteLine("║5. Ändra uppgifter på medlem            ║");
            Console.WriteLine("║6. Specefika uppgifter på medlem        ║");
            Console.WriteLine("║7. Registrera en ny båt på medlem       ║");
            Console.WriteLine("║8. Ta bort en båt                       ║");
            Console.WriteLine("║9. Ändra en båt                         ║");
            Console.WriteLine("║0. Avsluta                              ║");
            Console.WriteLine("╚════════════════════════════════════════╝");
        }

        public IList<Person> ChangePersonRecords(IList<Person> person, string tempNumber)
        {

            int number = int.Parse(tempNumber) - 1;
            Console.Write("Ange namn: ");
            string name = Console.ReadLine();
            Console.Write("Ange personnr: ");
            string ssn = Console.ReadLine();
            person[number].setName(name);
            person[number].setSSN(ssn);

            return person;
        }
        public Person addPerson()
        {
            RenderMessage("Lägg Till Person");
            Console.Write("Ange namn: ");
            string name = Console.ReadLine();
            Console.Write("Ange Personnr: ");
            string ssn = Console.ReadLine();
            Person p = new Person(name, ssn);
            return p;
        }
        public void BoatTypes()
        {
            Console.Write("Vad är det för typ av båt?");
            Console.WriteLine("\n1. Segelbåt \n2. Motorseglare \n3. Motorbåt \n4. Kajak/Kanot \n5. Övrigt");
            Console.Write("Ange båtTyp [1-5]: ");
        }
        public void ShowNumber(int min, int max)
        {
            Console.Write("\nAnge nummer [{0}-{1}]:  ", min, max);
        }
        // Skriver ut specifik information
        public void RenderSpecific(IList<Person> person)
        {
            // Om antalet personer är 0 så slängs ett felmeddelande

            RenderMessage("Mer Detaljerad Info");
            Console.WriteLine();
            foreach (Person item in person)
            {

                List<Boat> boat = item.getBoat();
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("[MEDLEM] ");
                Console.Write("Medlemsnummer: ");
                Console.ResetColor();
                Console.Write(item.getID());
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nNamn: ");
                Console.ResetColor();
                Console.Write(item.getName());
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nPersonnummer: ");
                Console.ResetColor();
                Console.Write(item.getSSN());
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine();
                Console.Write("Antal Båtar: ");
                Console.ResetColor();
                Console.Write(item.getAntal());
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine();
                Console.ResetColor();

                if (boat != null)
                {
                    int count = 1;
                    foreach (Boat boats in boat)
                    {
                        Console.WriteLine("\n[BÅT(AR)] ");
                        Console.ResetColor();
                        Console.WriteLine("Båtnr: {0}", count);
                        Console.Write("BåtTyp: ");
                        Console.WriteLine(boats.getType());
                        Console.Write("BåtLängd: ");
                        Console.Write(boats.getLength());
                        Console.Write(" meter");
                        Console.WriteLine();
                        count++;
                    }
                    
                }
 
                
                Console.WriteLine("\n");
                Console.ResetColor();
            }
        }
        // Skriver ut information
        public void Render(IList<Person> person)
        {
            RenderMessage("Person Info");
            Console.WriteLine();
            foreach (Person item in person)
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("[MEDLEM] ");
                Console.Write("Medlemsnummer: ");
                Console.ResetColor();
                Console.Write(item.getID());
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nNamn: ");
                Console.ResetColor();
                Console.Write(item.getName());
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\nAntal Båtar: ");
                Console.ResetColor();
                Console.Write(item.getAntal());
                Console.WriteLine("\n");
                Console.ResetColor();
            }
        }
        // Visar endast en persons uppgifter
        public void RenderPerson(Person person)
        {
            Console.WriteLine();
            Console.WriteLine("Information för användare {0}", person.getID());
            List<Boat> boat = person.getBoat();
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("[MEDLEM] ");
            Console.Write("Medlemsnummer: ");
            Console.ResetColor();
            Console.Write(person.getID());
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\nNamn: ");
            Console.ResetColor();
            Console.Write(person.getName());
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("\nPersonnummer: ");
            Console.ResetColor();
            Console.Write(person.getSSN());
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();
            Console.Write("Antal Båtar: ");
            Console.ResetColor();
            Console.Write(person.getAntal());
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();

            if (boat != null)
            {
                int count = 1;
                foreach (Boat boats in boat)
                {
                    Console.WriteLine("\n[BÅT(AR)] ");
                    Console.ResetColor();
                    Console.WriteLine("Båtnr: {0}", count);
                    Console.Write("BåtTyp: ");
                    Console.WriteLine(boats.getType());
                    Console.Write("BåtLängd: ");
                    Console.Write(boats.getLength());
                    Console.Write(" meter");
                    Console.WriteLine();
                    count++;
                }

            }


            Console.WriteLine("\n");
        }
        public void RenderBoat(Person person)
        {
            Console.ResetColor();
            Console.WriteLine();
            List<Boat> boat = person.getBoat();
            if (boat.Count > 1)
            {
                Console.WriteLine("[Båtar som {0} har]", person.getName());
                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("[Båten som {0} har]", person.getName());
                Console.WriteLine();
            }
            if (boat != null)
            {
                
                int count = 1;
                foreach (Boat boats in boat)
                {
                    Console.ResetColor();
                    Console.WriteLine("Båtnr: {0}", count);
                    Console.Write("BåtTyp: ");
                    Console.WriteLine(boats.getType());
                    Console.Write("BåtLängd: ");
                    Console.Write(boats.getLength());
                    Console.Write(" meter\n");
                    count++;
                }

            }

        }
        public static void ContinueOnKeyPressed() // Om man trycker en tangent, rensas fönstret och börjar om.
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.Write("\n   Tryck tangent för att fortsätta  ");
            Console.ResetColor();
            Console.CursorVisible = false;
            Console.ReadKey(true);
            Console.Clear();
            Console.CursorVisible = true;
        }
        
        // Skriver ut info när vi väl ska ta bort/ändra användare
        public static void RenderSelect(IList<Person> person)
        {
            int count = 1;
            Console.WriteLine();
            Console.WriteLine("---------------------------------");
            foreach (Person item in person)
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("{0}. ", count);
                Console.Write("Medlemsnummer: ");
                Console.Write(item.getID());
                Console.Write(" Namn: ");
                Console.Write(item.getName());
                Console.WriteLine();

                count++;

            }
            Console.WriteLine("---------------------------------");
            Console.WriteLine("0. för Meny");
            Console.ResetColor();
        }
        public void Clear()
        {
            Console.Clear();
        }
        public void fixString(string text)
        {
            Console.Write(text);
        }
        public void RenderMessage(string message)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();
            Console.Write(" ╔".PadRight(10, '═'));
            Console.Write("".PadRight(message.Length, '═'));
            Console.WriteLine("════╗ ");
            Console.WriteLine(" ║       {0}     ║ ", message);
            Console.Write(" ╚".PadRight(10, '═'));
            Console.Write("".PadRight(message.Length, '═'));
            Console.WriteLine("════╝ ");
            Console.BackgroundColor = ConsoleColor.Black;
            Console.WriteLine();
            Console.ResetColor();
        }
    }
}
